package com.recruit.wechat.config;

import com.recruit.wechat.SpringUtil;
import com.recruit.wechat.aop.Token;
import com.recruit.wechat.config.token.JwtUtils;
import com.recruit.wechat.controller.BaseController;
import io.jsonwebtoken.Claims;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;




public class JwtTokenInterceptor extends  HandlerInterceptorAdapter {

//    @Autowired
//    RedisTemplate redisTemplate;

    @Autowired
    JwtUtils jwtUtil;


    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {



        String token=request.getHeader("touken");

        System.out.println("token:"+token);

        if(token==null){

            // 重定向到登录页面
            response.sendError(302,"请重新登录");

            return false;

        }

        Claims claims = jwtUtil.parseJwt(token);
        if(claims==null){
            response.sendError(302,"请重新登录");

            return false;
        }

        return  true;
//        System.out.println("拦截器获取到了token:"+token);
//
//        //查询redis的剩余时间
//        Long expire=redisTemplate.getExpire(token);
//
//
//
//        System.out.println("expire:"+expire);
//
//        if (expire<0){//未登录状态
//
//                       // 重定向到登录页面
//            response.sendError(302,"请重新登录");
//                return false;
//
//        }else {
//            //重置touken时间
//            redisTemplate.expire(token,30L, TimeUnit.MINUTES);
//            // 有登录信息，则放行
//            return true;
//
//        }
    }

}
